# sympy实现1-施密特正交化（分数显示）
# https://blog.csdn.net/ouening/article/details/83279894
from sympy import Matrix, GramSchmidt

# L = [Matrix([1,- 1, 1, -1]), Matrix([5, 1, 1, 1]), Matrix([-3, -3, 1, 3])]
L = [Matrix([1,1,0]), Matrix([1, 1, 1])]
# o1=GramSchmidt(L)#正交基
# print(o1)
o2 = GramSchmidt(L, True)  # 单位化正交基/标准
print(o2)
# 施密特正交化（分数显示）

## numpy实现2-施密特正交化（分数显示）
# from fractions import Fraction
# import numpy as np
# from scipy.linalg import *
# a=np.array([[1,2,3],[2,1,3],[3,2,1]])
# a=a.T
#
# np.set_printoptions(formatter={'all':lambda x: str(Fraction(x).limit_denominator())})
# print(orth(a))
## 施密特正交化（分数显示）